home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #14 / Monster Media No. 14 (April 1996) (Monster Media, Inc.).ISO / prog_bas / svgapv24.zip / SVGADEMO.BAS < prev    next >
BASIC Source File  |  1996-01-30  |  29KB  |  717 lines

  1. '****************************************************************************
  2. '*
  3. '*      'SVGAQB' & 'SVGAPV' A Super VGA Graphics Librarys for use with
  4. '*      MS QuickBASIC 4.X and MS PDS/VBDOS
  5. '*      Copyright 1993-1996 by Stephen L. Balkum and Daniel A. Sill
  6. '*
  7. '*      MS, QuickBASIC, PDS, and VBDOS are registered trademarks of
  8. '*      Microsoft Corporation.
  9. '*
  10. '*    **************** UNREGISTERED SHAREWARE VERSION **********************
  11. '*    * FOR EVALUATION ONLY. NOT FOR RESALE IN ANY FORM. SOFTWARE WRITTEN  *
  12. '*    * USING THIS UNREGISTERED SHAREWARE GRAPHICS LIBRARY MAY NOT BY SOLD *
  13. '*    * OR USED FOR ANY PURPOSE OTHER THAN THE EVALUATION OF THIS LIBRARY. *
  14. '*    **********************************************************************
  15. '*
  16. '*    **************** NO WARRANTIES AND NO LIABILITY **********************
  17. '*    * Stephen L. Balkum and Daniel A. Sill provide no warranties, either *
  18. '*    * expressed or implied, of merchant ability, or fitness, for a       *
  19. '*    * particular use or purpose of this SOFTWARE and documentation.      *
  20. '*    * In no event shall Stephen L. Balkum or Daniel A. Sill be held      *
  21. '*    * liable for any damages resulting from the use or misuse of the     *
  22. '*    * SOFTWARE and documentation.                                        *
  23. '*    **********************************************************************
  24. '*
  25. '*    ************** U.S. GOVERNMENT RESTRICTED RIGHTS *********************
  26. '*    * Use, duplication, or disclosure of the SOFTWARE and documentation  *
  27. '*    * by the U.S. Government is subject to the restrictions as set forth *
  28. '*    * in subparagraph (c)(1)(ii) of the Rights in Technical Data and     *
  29. '*    * Computer Software clause at DFARS 252.227-7013.                    *
  30. '*    * Contractor/manufacturer is Stephen L. Balkum and Daniel A. Sill,   *
  31. '*    * P.O. Box 7704, Austin, Texas 78713-7704                            *
  32. '*    **********************************************************************
  33. '*
  34. '*    **********************************************************************
  35. '*    * By using this SOFTWARE or documentation, you agree to the above    *
  36. '*    * terms and conditions.                                              *
  37. '*    **********************************************************************
  38. '*
  39. '****************************************************************************
  40.  
  41.  
  42.     REM $INCLUDE: 'SVGABC.BI'
  43.     REM $INCLUDE: 'SVGADEMO.BI'
  44.     REM $DYNAMIC
  45.     DEFINT A-Z
  46.  
  47.     CLEAR
  48.  
  49.     REDIM POINTARRY3D(0 TO 13) AS P3Dtype
  50.     REDIM PLAYARRY(0 TO 13) AS P3Dtype
  51.     REDIM PLOTARRY(0 TO 13) AS P2DType
  52.     REDIM OPLOTARRY(0 TO 13) AS P2DType
  53.     REDIM GFXBLK1(0 TO 100) AS INTEGER
  54.     REDIM GFXBLK2(0 TO 100) AS INTEGER
  55.     REDIM GFXBLK3(0 TO 100) AS INTEGER
  56.  
  57.     '*************************************************************************
  58.     '* SAVE THE STARTING VIDEOMODE AND SET IT TO MODE 3.
  59.     '*************************************************************************
  60.     STARTVIDEOMODE = VIDEOMODEGET
  61.     DUMMY = RESTEXT
  62.     CLS
  63.     FOR A = 0 TO 33
  64.         DUMMY$ = INKEY$  '* CLEAR THE KEYBOARD BUFFER
  65.     NEXT A
  66.     '*************************************************************************
  67.     '* MOVE THE DOS CURSOR TO THE TOP LEFT TO START THE PROGRAM AND SAY HELLO
  68.     '*************************************************************************
  69.     LOCATE 1, 4
  70.     PRINT "'SVGAQB.LIB' A SuperVGA Graphics Library For Use With MS QuickBasic 4.5"
  71.     LOCATE 2, 4
  72.     PRINT "'SVGAPV.LIB' A SuperVGA Graphics Library For Use With MS PDS and VBDOS"
  73.  
  74.     LOCATE 4, 10
  75.     PRINT "Copyright 1993-1995 by Stephen L. Balkum and Daniel A. Sill"
  76.     LOCATE 12, 25
  77.     PRINT "Demonstration/Example Program"
  78.     LOCATE 23, 1
  79.     PRINT "Press a key to begin the demo..."
  80.     GETKEY (RET$)
  81.     CLS
  82.  
  83.     '*************************************************************************
  84.     '* LET'S ID THE PROCESSOR FIRST AS THE LIBRARY REQUIRES A 386 OR BETTER.
  85.     '*************************************************************************
  86.     'LOCATE 1, 1
  87.     CPU = WHICHCPU
  88.     CPU$ = STR$(CPU)
  89.     L = LEN(CPU$)
  90.     CPU$ = RIGHT$(CPU$, L - 1)
  91.     IF CPU < 386 THEN
  92.         PRINT "Sorry, this library requires a 80386 or better processor."
  93.         PRINT "Processor is identified as a 80"; CPU$; "."
  94.         PRINT "Demo program will be terminated."
  95.         PRINT
  96.         PRINT "Press a key..."
  97.         SOUND 100, 5
  98.         WHILE INKEY$ = ""
  99.         WEND
  100.         VIDEOMODESET (STARTVIDEOMODE)
  101.         CLEAR
  102.         END
  103.     END IF
  104.  
  105.     '*************************************************************************
  106.     '* LET'S ID THE VIDEO CARD/CHIP AS THE LIBRARY REQUIRES A SUPERVGA ADAPTER.
  107.     '*************************************************************************
  108.     VGA = WHICHVGA
  109.     PRINT "Microprocessor is identified as a 80"; CPU$; "."
  110.     PRINT
  111.     SELECT CASE VGA
  112.         CASE IS = 1
  113.             VGA$ = "Acumos AVGA2/3 SuperVGA"
  114.         CASE IS = 2
  115.             VGA$ = "ATI Technologies 18/28/38/68800 SuperVGA"
  116.         CASE IS = 3
  117.             VGA$ = "Ahead V5000 ver A SuperVGA"
  118.         CASE IS = 4
  119.             VGA$ = "Ahead V5000 ver B SuperVGA"
  120.         CASE IS = 5
  121.             VGA$ = "Chips and Technologies 82C450/1/2/3/5/6/7 SuperVGA"
  122.         CASE IS = 6
  123.             VGA$ = "Cirrus Logic CL-GD 5xx,6xx,28xx,54xx,62xx SuperVGA"
  124.         CASE IS = 7
  125.             VGA$ = "Everex Ev236/6xx Micro Enhancer SuperVGA"
  126.         CASE IS = 8
  127.             VGA$ = "Genoa 61/62/63/64/6600 SuperVGA"
  128.         CASE IS = 9
  129.             VGA$ = "NCR 77C21/22/22E/22E+ SuperVGA"
  130.         CASE IS = 10
  131.             VGA$ = "Oak Technologies OTI-037C/067/077/087 SuperVGA"
  132.         CASE IS = 11
  133.             VGA$ = "Paradise/Western Digital PVGA1A,WD90C00/1x/2x/3x SuperVGA"
  134.         CASE IS = 12
  135.             VGA$ = "Realtek RT3106 SuperVGA"
  136.         CASE IS = 13
  137.             VGA$ = "Trident 8800CS,8900B/C/CL/CX,90x0 SuperVGA"
  138.         CASE IS = 14
  139.             VGA$ = "Tseng Labs ET3000-AX/BX/BP SuperVGA"
  140.         CASE IS = 15
  141.             VGA$ = "Tseng Labs ET4000/W32/W32I SuperVGA"
  142.         CASE IS = 16
  143.             VGA$ = "VESA compatible SuperVGA"
  144.         CASE IS = 17
  145.             VGA$ = "Video 7 HT-208/16 SuperVGA"
  146.         CASE IS = 18
  147.             VGA$ = "Avance Logic AL2101 SuperVGA"
  148.         CASE IS = 19
  149.             VGA$ = "MXIC MX68000/10 SuperVGA"
  150.         CASE IS = 20
  151.             VGA$ = "Primus P2000 SuperVGA"
  152.         CASE ELSE
  153.             VGA$ = "Unknown"
  154.             VGA = 0
  155.     END SELECT
  156.     IF VGA < 1 THEN
  157.         PRINT "Sorry, unable to identify video card or it is not a SuperVGA video adapter."
  158.         PRINT "Demo program will be terminated."
  159.         PRINT
  160.         PRINT "Press a key..."
  161.         SOUND 100, 5
  162.         WHILE INKEY$ = ""
  163.         WEND
  164.         VIDEOMODESET (STARTVIDEOMODE)
  165.         CLEAR
  166.         END
  167.     ELSE
  168.         PRINT "Video card/chip is identified as a "; VGA$; "."
  169.     END IF
  170.  
  171.     '*************************************************************************
  172.     '* LET'S SEE THE HOW MUCH MEMORY IS INSTALLED ON THE SUPER VGA ADAPTER.
  173.     '*************************************************************************
  174.     VIDEOMEMORY = WHICHMEM
  175.     MEM$ = STR$(VIDEOMEMORY)
  176.     MEM$ = RIGHT$(MEM$, LEN(MEM$) - 1) + " kB"
  177.     IF VIDEOMEMORY < 1 THEN
  178.         PRINT "Sorry, unable to identify the amount of installed video memory."
  179.         PRINT "Demo program will be terminated."
  180.         PRINT
  181.         PRINT "Press a key..."
  182.         SOUND 100, 5
  183.         WHILE INKEY$ = ""
  184.         WEND
  185.         VIDEOMODESET (STARTVIDEOMODE)
  186.         CLEAR
  187.         END
  188.     ELSE
  189.         PRINT "Installed video memory identified as "; MEM$; "."
  190.     END IF
  191.  
  192.     '*************************************************************************
  193.     '* LET'S TELL THE USER WHAT THE HIGHEST RESOLUTION THAT THE VIDEO CARD
  194.     '* AND ITS INSTALLED MEMORY CARD IS CAPABLE OF. THE MONITOR MUST BE ABLE
  195.     '* TO SUPPORT THOSE MODES TOO !
  196.     '*************************************************************************
  197.     PRINT "Video card and installed memory is capable of the following resolutions:"
  198.     SELECT CASE VIDEOMEMORY
  199.         CASE IS > 2047
  200.             PRINT TAB(4); "320x200 in 256 colors"
  201.             PRINT TAB(4); "640x400 in 256 colors"
  202.             PRINT TAB(4); "640x480 in 256 colors"
  203.             PRINT TAB(4); "800x600 in 256 colors"
  204.             PRINT TAB(4); "1024x768 in 256 colors"
  205.             PRINT TAB(4); "1280x1024 in 256 colors"
  206.             MAX = 5
  207.         CASE IS > 1023
  208.             PRINT TAB(4); "320x200 in 256 colors"
  209.             PRINT TAB(4); "640x400 in 256 colors"
  210.             PRINT TAB(4); "640x480 in 256 colors"
  211.             PRINT TAB(4); "800x600 in 256 colors"
  212.             PRINT TAB(4); "1024x768 in 256 colors"
  213.             MAX = 4
  214.         CASE IS > 511
  215.             PRINT TAB(4); "320x200 in 256 colors"
  216.             PRINT TAB(4); "640x400 in 256 colors"
  217.             PRINT TAB(4); "640x480 in 256 colors"
  218.             PRINT TAB(4); "800x600 in 256 colors"
  219.             MAX = 3
  220.         CASE ELSE
  221.             PRINT TAB(4); "320x200 in 256 colors"
  222.             PRINT TAB(4); "640x400 in 256 colors"
  223.             MAX = 1
  224.     END SELECT
  225.     PRINT
  226.     PRINT "PLEASE keep in mind that not all monitors support all resolutions."
  227.     PRINT "If you know your monitor will not work properly in certain resolutions"
  228.     PRINT "(such as 1024x768 or 1280x1024), do NOT run the demo in that resolution."
  229.     PRINT
  230.  
  231.     '*************************************************************************
  232.     '* LET'S LOOK FOR A MOUSE. IF WE FIND ONE, TELL ALL ABOUT IT
  233.     '*************************************************************************
  234.     MOUSE = WHICHMOUSE
  235.     IF MOUSE > 0 THEN
  236.         MOUSEINFO MJV, MNV, TP, I
  237.         VER$ = STR$(MNV)
  238.         L = LEN(VER$)
  239.         VER$ = STR$(MJV) + "." + RIGHT$(VER$, L - 1)
  240.         VER$ = "Software driver version is" + VER$ + " (Microsoft equivalent version)."
  241.         SELECT CASE TP
  242.             CASE IS = 1
  243.                 TYPE$ = "bus mouse"
  244.             CASE IS = 2
  245.                 TYPE$ = "serial mouse"
  246.             CASE IS = 3
  247.                 TYPE$ = "Inport mouse"
  248.             CASE IS = 4
  249.                 TYPE$ = "PS/2 mouse"
  250.             CASE IS = 5
  251.                 TYPE$ = "HP mouse"
  252.             CASE ELSE
  253.                 TYPE$ = "unknown type"
  254.         END SELECT
  255.         PRINT "Microsoft compatible " + TYPE$ + " detected with" + STR$(MOUSE) + " buttons on IRQ" + STR$(I) + "."
  256.         PRINT VER$
  257.     ELSE
  258.         PRINT "No Microsoft compatible mouse detected."
  259.     END IF
  260.     PRINT
  261.  
  262.     '*************************************************************************
  263.     '* LET'S LOOK FOR JOYSTICKS
  264.     '*************************************************************************
  265.     JOYSTICK = WHICHJOYSTICK
  266.     SELECT CASE JOYSTICK
  267.         CASE IS = -1
  268.             A$ = "No joystick port detected or no joystick BIOS support present."
  269.         CASE IS = 0
  270.             A$ = "No joystick detected."
  271.         CASE IS = 1
  272.             A$ = "Joystick A is present and available."
  273.         CASE IS = 2
  274.             A$ = "Joystick B is present and available."
  275.         CASE IS = 3
  276.             A$ = "Both Joystick A and Joystick B are present and available."
  277.     END SELECT
  278.     PRINT A$
  279.     PRINT
  280.     PRINT "Press a key..."
  281.     GETKEY RET$
  282.  
  283.     '*************************************************************************
  284.     '* LET'S GET DOWN TO BUSINESS!
  285.     '*************************************************************************
  286.     RES = 1
  287.     ENDIT = 0
  288.  
  289.     '*************************************************************************
  290.     '* INIT ALTERNATE MOUSE CURSORS
  291.     '*************************************************************************
  292.     FOR I = 1 TO 386
  293.         READ A
  294.         MID$(MAGMOUSECURSOR, I, 1) = CHR$(A)
  295.     NEXT I
  296.     FOR I = 1 TO 386
  297.         READ A
  298.         MID$(BIGMOUSECURSOR, I, 1) = CHR$(A)
  299.     NEXT I
  300.     FOR I = 1 TO 386
  301.         READ A
  302.         MID$(STWMOUSECURSOR, I, 1) = CHR$(A)
  303.     NEXT I
  304.  
  305.     '*************************************************************************
  306.     '* INIT ALTERNATE COLOR PALETTES
  307.     '*************************************************************************
  308.     DUMMY = RES320
  309.     PALGET ORGPAL, 0, 255
  310.     PALCOPY ORGPAL, PAL, 0, 255
  311.     PALCOPY ORGPAL, PAL2, 0, 255
  312.     MYPI! = 8 * ATN(1) / 240
  313.     FOR Colr = 0 TO 239
  314.         R1 = 32 + SIN((Colr + 0) * MYPI!) * 31
  315.         G1 = 32 + SIN((Colr + 80) * MYPI!) * 31
  316.         B1 = 32 + SIN((Colr + 160) * MYPI!) * 31
  317.         R2 = 32 + SIN((Colr + 10) * MYPI!) * 31
  318.         G2 = 32 + SIN((Colr + 30) * MYPI!) * 31
  319.         B2 = 32 + SIN((Colr + 50) * MYPI!) * 31
  320.         OFFSET = ((Colr + 16) * 3)
  321.         MID$(PAL, OFFSET + 1, 1) = CHR$(R1)  '* RED
  322.         MID$(PAL, OFFSET + 2, 1) = CHR$(G1)  '* GREEN
  323.         MID$(PAL, OFFSET + 3, 1) = CHR$(B1)  '* BLUE
  324.         MID$(PAL2, OFFSET + 1, 1) = CHR$(R2)  '* RED
  325.         MID$(PAL2, OFFSET + 2, 1) = CHR$(G2)  '* GREEN
  326.         MID$(PAL2, OFFSET + 3, 1) = CHR$(B2)  '* BLUE
  327.     NEXT Colr
  328.     DUMMY = RESTEXT
  329.  
  330.     '*************************************************************************
  331.     '* HERE IS THE MAIN SELECTOR LOOP
  332.     '*************************************************************************
  333.     WHILE ENDIT = 0
  334.         RetVal$ = ""
  335.         CLS
  336.         SOUND 700, .75
  337.         SELECT CASE RES
  338.             CASE IS = 1
  339.                 RES$ = "320x200x256"
  340.             CASE IS = 2
  341.                 RES$ = "640x400x256"
  342.             CASE IS = 3
  343.                 RES$ = "640x480x256"
  344.             CASE IS = 4
  345.                 RES$ = "800x600x256"
  346.             CASE IS = 5
  347.                 RES$ = "1024x768x256"
  348.             CASE IS = 6
  349.                 RES$ = "1280x1024x256"
  350.         END SELECT
  351.         PRINT "Please select the demo you would like to see in the " + RES$ + " resolution:"
  352.         PRINT
  353.         PRINT "(0)  Exit This Program"
  354.         PRINT
  355.         PRINT "(1)  Demo #1  The Primitive Drawing Routines"
  356.         PRINT "(2)  Demo #2  The Clipping Capabilities"
  357.         PRINT "(3)  Demo #3  The Fill Routines"
  358.         PRINT "(4)  Demo #4  The Palette Routines"
  359.         PRINT "(5)  Demo #5  The Block Routines"
  360.         PRINT "(6)  Demo #6  The Text Routines"
  361.         PRINT "(7)  Demo #7  The Scrolling and Paging Routines"
  362.         PRINT "(8)  Demo #8  The PCX Routines"
  363.         PRINT "(9)  Demo #9  The Mouse Routines"
  364.         PRINT "(10) Demo #10 The Joystick Routines"
  365.         PRINT "(11) Demo #11 The Two Dimensional Routines"
  366.         PRINT "(12) Demo #12 The Three Dimensional Routines"
  367.         PRINT "(13) The Grand Tour Of All Demos"
  368.         SELECT CASE VIDEOMEMORY
  369.             CASE IS > 2047
  370.                 PRINT "(14) Use 320x200x256  Resolution"
  371.                 PRINT "(15) Use 640x400x256  Resolution"
  372.                 PRINT "(16) Use 640x480x256  Resolution"
  373.                 PRINT "(17) Use 800x600x256  Resolution"
  374.                 PRINT "(18) Use 1024x768x256 Resolution"
  375.                 PRINT "(19) Use 1280x1024x256 Resolution"
  376.                 MAX = 19
  377.             CASE IS > 1023
  378.                 PRINT "(14) Use 320x200x256  Resolution"
  379.                 PRINT "(15) Use 640x400x256  Resolution"
  380.                 PRINT "(16) Use 640x480x256  Resolution"
  381.                 PRINT "(17) Use 800x600x256  Resolution"
  382.                 PRINT "(18) Use 1024x768x256 Resolution"
  383.                 MAX = 18
  384.             CASE IS > 511
  385.                 PRINT "(14) Use 320x200x256  Resolution"
  386.                 PRINT "(15) Use 640x400x256  Resolution"
  387.                 PRINT "(16) Use 640x480x256  Resolution"
  388.                 PRINT "(17) Use 800x600x256  Resolution"
  389.                 MAX = 17
  390.             CASE ELSE
  391.                 PRINT "(14) Use 320x200x256  Resolution"
  392.                 PRINT "(15) Use 640x400x256  Resolution"
  393.                 MAX = 15
  394.         END SELECT
  395.         A$ = ""
  396.         INPUT "Your Choice"; A$
  397.         KY = VAL(A$)
  398.         IF (A$ > "9") OR (A$ < "0") THEN
  399.             KY = -1
  400.         END IF
  401.         IF KY > MAX THEN
  402.             KY = -1
  403.         END IF
  404.         IF KY > 0 AND KY < 13 THEN
  405.             SELECT CASE RES
  406.                 CASE IS = 1
  407.                     OK = RES320
  408.                 CASE IS = 2
  409.                     OK = RES640L
  410.                 CASE IS = 3
  411.                     OK = RES640
  412.                 CASE IS = 4
  413.                     OK = RES800
  414.                 CASE IS = 5
  415.                     OK = RES1024
  416.                 CASE IS = 6
  417.                     OK = RES1280
  418.             END SELECT
  419.             IF OK <> 1 THEN
  420.                 DUMMY = RESTEXT
  421.                 CLS
  422.                 SOUND 100, 5
  423.                 PRINT "Sorry, although your video card has enough memeory, it does"
  424.                 PRINT "not support this video mode. PRESS A KEY."
  425.                 GETKEY RET$
  426.                 KY = -1
  427.             END IF
  428.         END IF
  429.         SELECT CASE KY
  430.             CASE IS = 0
  431.                 ENDIT = 1
  432.             CASE IS = 1
  433.                 'DEMO #1
  434.                 DOPRIMS RetVal$
  435.                 DUMMY = RESTEXT
  436.             CASE IS = 2
  437.                 'DEMO #2
  438.                 DOCLIP RetVal$
  439.                 DUMMY = RESTEXT
  440.             CASE IS = 3
  441.                 'DEMO #3
  442.                 DOFILL RetVal$
  443.                 DUMMY = RESTEXT
  444.             CASE IS = 4
  445.                 'DEMO #4
  446.                 DOPAL RetVal$
  447.                 DUMMY = RESTEXT
  448.             CASE IS = 5
  449.                 'DEMO #5
  450.                 DOBLOCK RetVal$
  451.                 DUMMY = RESTEXT
  452.             CASE IS = 6
  453.                 'DEMO #6
  454.                 DOTEXT RetVal$
  455.                 DUMMY = RESTEXT
  456.             CASE IS = 7
  457.                 'DEMO #7
  458.                 DOSCROLL RetVal$
  459.                 DUMMY = RESTEXT
  460.             CASE IS = 8
  461.                 'DEMO #8
  462.                 DOPCX RetVal$
  463.                 DUMMY = RESTEXT
  464.             CASE IS = 9
  465.                 'DEMO #9
  466.                 DOMOUSE RetVal$
  467.                 DUMMY = RESTEXT
  468.             CASE IS = 10
  469.                 'DEMO #10
  470.                 DOJOYSTICK RetVal$
  471.                 DUMMY = RESTEXT
  472.             CASE IS = 11
  473.                 'DEMO #11
  474.                 DO2D RetVal$
  475.                 DUMMY = RESTEXT
  476.             CASE IS = 12
  477.                 'DEMO #12
  478.                 DO3D RetVal$
  479.                 DUMMY = RESTEXT
  480.             CASE IS = 13
  481.                 'DO THE GRAND TOUR OF ALL DEMOS!
  482.                 CLS
  483.                 PRINT "Press 'Q' To End Grand Tour At Any Time. Press 'S' To Skip To The Next"
  484.                 PRINT "Demo At Any Time. Press Any Other Key to Begin The Grand Tour..."
  485.                 GETKEY RET$
  486.                 IF RET$ = "Q" THEN
  487.                     GOTO EXITGRANDTOUR
  488.                 END IF
  489.                 SELECT CASE RES
  490.                     CASE IS = 1
  491.                         OK = RES320
  492.                     CASE IS = 2
  493.                         OK = RES640L
  494.                     CASE IS = 3
  495.                         OK = RES640
  496.                     CASE IS = 4
  497.                         OK = RES800
  498.                     CASE IS = 5
  499.                         OK = RES1024
  500.                     CASE IS = 6
  501.                         OK = RES1280
  502.                 END SELECT
  503.                 IF OK <> 1 THEN
  504.                     DUMMY = RESTEXT
  505.                     CLS
  506.                     SOUND 100, 5
  507.                     PRINT "Sorry, although your video card has enough memeory, it does"
  508.                     PRINT "not support this video mode. PRESS A KEY."
  509.                     GETKEY RET$
  510.                     GOTO EXITGRANDTOUR
  511.                 END IF
  512.                 'DEMO #1
  513.                 DOPRIMS RetVal$
  514.                 IF RetVal$ = "Q" THEN
  515.                     GOTO EXITGRANDTOUR
  516.                 END IF
  517.                 'DEMO #2
  518.                 DOCLIP RetVal$
  519.                 IF RetVal$ = "Q" THEN
  520.                     GOTO EXITGRANDTOUR
  521.                 END IF
  522.                 'DEMO #3
  523.                 DOFILL RetVal$
  524.                 IF RetVal$ = "Q" THEN
  525.                     GOTO EXITGRANDTOUR
  526.                 END IF
  527.                 'DEMO #4
  528.                 DOPAL RetVal$
  529.                 IF RetVal$ = "Q" THEN
  530.                     GOTO EXITGRANDTOUR
  531.                 END IF
  532.                 'DEMO #5
  533.                 DOBLOCK RetVal$
  534.                 IF RetVal$ = "Q" THEN
  535.                     GOTO EXITGRANDTOUR
  536.                 END IF
  537.                 'DEMO #6
  538.                 DOTEXT RetVal$
  539.                 IF RetVal$ = "Q" THEN
  540.                     GOTO EXITGRANDTOUR
  541.                 END IF
  542.                 'DEMO #7
  543.                 DOSCROLL RetVal$
  544.                 IF RetVal$ = "Q" THEN
  545.                     GOTO EXITGRANDTOUR
  546.                 END IF
  547.                 'DEMO #8
  548.                 DOPCX RetVal$
  549.                 IF RetVal$ = "Q" THEN
  550.                     GOTO EXITGRANDTOUR
  551.                 END IF
  552.                 'DEMO #9
  553.                 DOMOUSE RetVal$
  554.                 IF RetVal$ = "Q" THEN
  555.                     GOTO EXITGRANDTOUR
  556.                 END IF
  557.                 IF RetVal$ = "Q" THEN
  558.                     GOTO EXITGRANDTOUR
  559.                 END IF
  560.                 'DEMO #10
  561.                 DOJOYSTICK RetVal$
  562.                 IF RetVal$ = "Q" THEN
  563.                     GOTO EXITGRANDTOUR
  564.                 END IF
  565.                 'DEMO #11
  566.                 DO2D RetVal$
  567.                 IF RetVal$ = "Q" THEN
  568.                     GOTO EXITGRANDTOUR
  569.                 END IF
  570.                 'DEMO #12
  571.                 DO3D RetVal$
  572. EXITGRANDTOUR:
  573.                 RetVal$ = ""
  574.                 DUMMY = RESTEXT
  575.             CASE IS = 14
  576.                 RES = 1
  577.             CASE IS = 15
  578.                 RES = 2
  579.             CASE IS = 16
  580.                 RES = 3
  581.             CASE IS = 17
  582.                 RES = 4
  583.             CASE IS = 18
  584.                 RES = 5
  585.             CASE IS = 19
  586.                 RES = 6
  587.             CASE ELSE
  588.                 SOUND 100, 5
  589.         END SELECT
  590.         IF RetVal$ = "Q" THEN
  591.             ENDIT = 1
  592.         END IF
  593.     WEND
  594.  
  595.     '*************************************************************************
  596.     '* THAT'S ALL FOLKS! END THE PROGRAM
  597.     '*************************************************************************
  598.     DUMMY = RESTEXT '* FORCE THE VGA PALETTE TO RESET
  599.     VIDEOMODESET STARTVIDEOMODE '*RESTORE THE VIDEOMODE WE STARTED IN
  600.     DUMMY = RESTEXT '* FORCE THE VGA PALETTE TO RESET
  601.     CLEAR
  602.     END
  603.  
  604.  
  605.     '*************************************************************************
  606.     '* DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA
  607.     '*************************************************************************
  608.  
  609.     REM *MAGNIFIER MOUSE CURSOR DATA
  610.     DATA 7,6
  611.     DATA 255,255,255,255,255,7  ,7  ,7  ,7  ,255,255,255,255,255,255,255
  612.     DATA 255,255,255,  7,  7,255,255,255,255,7  ,7,  255,255,255,255,255
  613.     DATA 255,255,7  ,255,255,255,255,255,255,255,255,7  ,255,255,255,255
  614.     DATA 255,7  ,255,255,255,255,255,255,255,255,255,255,7  ,255,255,255
  615.     DATA 255,7  ,255,255,255,255,255,255,255,255,255,255,7  ,255,255,255
  616.     DATA 7  ,255,255,255,255,255,255,255,255,255,255,255,255,7  ,255,255
  617.     DATA 7  ,255,255,255,255,255,255,255,255,255,255,255,255,7  ,255,255
  618.     DATA 7  ,255,255,255,255,255,255,255,255,255,255,255,255,7  ,255,255
  619.     DATA 7  ,255,255,255,255,255,255,255,255,255,255,255,255,7  ,255,255
  620.     DATA 255,7  ,255,255,255,255,255,255,255,255,255,255,7  ,255,255,255
  621.     DATA 255,7  ,255,255,255,255,255,255,255,255,255,255,7  ,255,255,255
  622.     DATA 255,7  ,7  ,255,255,255,255,255,255,255,255,7  ,7  ,255,255,255
  623.     DATA 255,255,7  ,7  ,7  ,255,255,255,255,7  ,7  ,7  ,255,255,255,255
  624.     DATA 255,255,255,7  ,7  ,7  ,7  ,7  ,7  ,8  ,8  ,255,255,255,255,255
  625.     DATA 255,255,255,255,255,7  ,7  ,7  ,7  ,7  ,8  ,8  ,255,255,255,255
  626.     DATA 255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255,255,255
  627.     DATA 255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255,255
  628.     DATA 255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255,255
  629.     DATA 255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255
  630.     DATA 255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255
  631.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255
  632.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255
  633.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8
  634.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,7  ,7  ,7
  635.  
  636.     REM *BIG ARROW MOUSE CURSOR DATA
  637.     DATA 1,1
  638.     DATA 0  ,0  ,0  ,255,255,255,255,255,255,255,255,255,255,255,255,255
  639.     DATA 0  ,15 ,15 ,0  ,0  ,255,255,255,255,255,255,255,255,255,255,255
  640.     DATA 0  ,15 ,15 ,15 ,15 ,0  ,0  ,0  ,255,255,255,255,255,255,255,255
  641.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,255,255,255,255,255,255
  642.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,0  ,255,255,255
  643.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,255
  644.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,255
  645.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,255,255
  646.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,255,255,255,255
  647.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,255,255,255,255,255
  648.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,255,255,255,255,255,255
  649.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,0  ,15 ,15 ,15 ,0  ,255,255,255,255,255
  650.     DATA 0  ,15 ,15 ,15 ,15 ,0  ,0  ,15 ,15 ,15 ,0  ,255,255,255,255,255
  651.     DATA 0  ,15 ,15 ,0  ,0  ,255,255,0  ,15 ,15 ,15 ,0  ,255,255,255,255
  652.     DATA 0  ,15 ,0  ,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255,255,255,255
  653.     DATA 0  ,0  ,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255,255,255
  654.     DATA 255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255,255
  655.     DATA 255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255,255
  656.     DATA 255,255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255
  657.     DATA 255,255,255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0
  658.     DATA 255,255,255,255,255,255,255,255,255,255,255,0, 15  ,15 ,15 ,0
  659.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,0
  660.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,0  ,0  ,0
  661.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  662.  
  663.     REM *STOPWATCH MOUSE CURSOR DATA
  664.     DATA 8,11
  665.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  666.     DATA 255,255,255,255,255,255,15 ,15 ,15 ,15 ,255,255,255,255,255,255
  667.     DATA 255,255,255,255,255,255,15 ,15 ,15 ,15 ,255,255,255,255,255,255
  668.     DATA 255,255,255,255,255,255,255,15 ,15 ,255,255,255,255,255,255,255
  669.     DATA 255,255,255,255,255,255,15 ,15 ,15 ,15 ,255,255,255,255,255,255
  670.     DATA 255,255,255,255,15 ,15 ,15 ,7  ,7  ,15 ,15 ,15 ,255,255,255,255
  671.     DATA 255,255,255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255,255,255
  672.     DATA 255,255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255,255
  673.     DATA 255,15 ,15 ,7  ,0  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255
  674.     DATA 255,15 ,7  ,7  ,7  ,0  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,255
  675.     DATA 15 ,15 ,7  ,7  ,7  ,7  ,0  ,7  ,7  ,7  ,0  ,0  ,7  ,7  ,15 ,15
  676.     DATA 15 ,7  ,7  ,7  ,7  ,7  ,7  ,0  ,0  ,0  ,7  ,7  ,7  ,7  ,7  ,15
  677.     DATA 15,7   ,7  ,7  ,7  ,7  ,7  ,0  ,0  ,7  ,7  ,7  ,7  ,7  ,7  ,15
  678.     DATA 15,15  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15
  679.     DATA 255,15 ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,255
  680.     DATA 255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255
  681.     DATA 255,255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255,255
  682.     DATA 255,255,255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255,255,255
  683.     DATA 255,255,255,255,15 ,15 ,15 ,7  ,7  ,15 ,15 ,15 ,255,255,255,255
  684.     DATA 255,255,255,255,255,255,15 ,15 ,15 ,15 ,255,255,255,255,255,255
  685.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  686.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  687.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  688.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  689.  
  690.     SUB GETKEY (KEY$)
  691.     REM $DYNAMIC
  692.     DEFINT A-Z
  693.  
  694.     '*************************************************************************
  695.     '* THIS ROUTINE WAITS FOR A KEY STROKE
  696.     '*************************************************************************
  697.  
  698.     FOR A = 0 TO 7 '* CLEAR THE KBD BUFFER
  699.         A$ = INKEY$
  700.     NEXT A
  701.  
  702.     SOUND 700, .75
  703.     A$ = ""
  704.     WHILE A$ = ""
  705.         A$ = INKEY$
  706.         IF A$ = "q" THEN
  707.             A$ = "Q"
  708.         END IF
  709.         IF A$ = "s" THEN
  710.             A$ = "S"
  711.         END IF
  712.     WEND
  713.     KEY$ = A$
  714.  
  715.     END SUB
  716.